import sys, os, io
input = io.BytesIO(os.read(0, os.fstat(0).st_size)).readline
t = int(input())
ans = []
x = list("RW")
for _ in range(t):
n, m = map(int, input().split())
s = [list(input().rstrip().decode()) for _ in range(n)]
ans0 = "NO"
for k in range(2):
ok = 1
for i in range(n):
si = s[i]
for j in range(m):
if x[(i + j + k) % 2] == si[j]:
ok = 0
break
if not ok:
break
if ok:
ans0 = "YES"
for i in range(n):
si = s[i]
for j in range(m):
si[j] = x[(i + j + k + 1) % 2]
break
ans.append(ans0)
if ans0 == "YES":
for s0 in s:
ans.append("".join(s0))
sys.stdout.write("\n".join(ans))
/*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#&@@@@@@&#&&&B&@@@@@@&B&#&&#&@@&G&@@@@@@@@@@@@@@@@@@
@@@@@@@&@@&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@&@GB&&#&##@@@@B#BB#@@&&@@&@#&@@@@@@@@@@@@@@@@@
@@@@@@@@@@&&&@@@@@@@@@@&&@@@@@@@@@@@@@@@@@@@@@&##&@@@@&#&#B#&B&&@@@B#&#PG&&&&&#@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@#&@@@@@@@@@@@@@@@@@@@@&PB@@@&&#B#&G&@B&@@&BG#&@&#&B&@&#@&@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@&@@@@@@@@@@&&&&#&@@@@@@@@@@@@@@@&@&##@@#B#P&&&&B&BG&@##&###@&&@#B&@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@&&@@@@@@@@@@@@@#@@@&@@@@@@@@@@@@@@@BGB#G&@&#&&B##&BP#B&@GP&#B&##&#@&@&&@@@&@@@@@@@@@@@@@@@
@@@@@@@@@@&@@@&&&@@@@@@@@&@@@@@@@@@@@@@@@@@&##P5BY#&B@@@BGB###GB@&B&G#BP#&#B##@@@@@&B&@@@@@@&@@@@@@@
@@@@@@@@@@@@@@&&&@@&&@@@@@@&@@@@@@@@@@@@@@@B##B#GP#BG&&&&G#&GBBG&&GBB#BBB###&#B&B#&&@@@@@@@@&@@@@@@@
@@@@@@@@@#&@@&&@@@@@&@@@@@&&@@@@@@@@@@@@@@&##BGGG5B&#G###&&#&GPB&##G#&&BP#&B&BG#P&@@&#&@@@@@B&@@@@@@
@@@@@@@@@&@@@#&@GB&@&@@@@@#&@&&@@@@@@@@@@@&##JPP5P&&BBBP#B#BB#B&#B#GGG###BPG@&#BGG&&&B#&@&&@GB@@@@@@
@@@@@@@@@@@@@&&@&&#&@&&&@@@&#&&&#@@&#@@@@@@@G5P55BP&BB#PJBB#GGBB&&PGBGBGGBGBGB&#&PG##&G#@#B@##@@@@@@
@@@@@@@@@@@@#B&@&@&#&@@#@@&&&#&#&@@&B@@@@@@&PBB#GGGGP#GGGB5P#B#BPPPGG#PG&BB&##PGB5P#B#BG@#G@#G@@@@@@
@@@@@@@@@@@@@#&@@@&&#BB&&B&#G&#B@@@&&@@&#@@@##GP#GPYP#GBPB##BBG5GP5PPPBGB#BGPBGGPYPG#GG#&@GB@#&@@@@@
@@@@@@@@@@@@&@&&@@&&&#BB&#@@&B@@@&@@@#@#P#@@&BPGBJPPG5G5#BBPGBP5G5P5GPPBYYBPPY5PGBJGB5G5B&GB#5B@@@@@
@@@@@@@@@@@@&##@&B&&&##&&@&@@@@@@&@@@@@P55G&@BYBYPP5PP5PG5GGPYPPGP5PP?P5YGJPBJYPPBGBBGB5G#B#&BB&@@@@
@@@@@@@@@@@@&##&&###&&&@&#&@@@&&#&&@@@@#Y555B@GP5PJPJ?75JJPJPP?Y5G55J5JJY5Y57J#GP?5GBB55BBB#&#B&@@@@
@@@@@@@@@@@@@@@&&&B&&B&&#B@@#&&G###@&@B5Y5?PPP&PYY5Y?5JJ5Y!???J5J575YJYJY?YJ55JPJPY755P#P5GG&BB&@@@@
@@@@@@@@@@@@@@##@&@#G&#&@&@@&@&&&&@@@#YYJ?YG77PP5YYJPJYGJ!7?7?JYG?5YYY?JPJ5JJJ??YYJGPYGBB#5YGGB&@@@@
@@@@@@@@@@@@@&#&&&&&@&&&&&&&&@&@##@@@P577JY?5Y!JY?YJJY5YJ??!JJY?555Y57JP?J57JJ??JJJYPG5?BGBBY?P#@@@@
@@@@@@@@@@@@&@&BB####B#GG#&@&&&#B&#@B??!Y???JY7~~??YYY???!~7??7YYJJ?5JY?JJ^?7Y?~JY?P?YJ5P?GGP#J#@@@@
@@@@@@@@@@@@&####G#BB#&&@B#@&B&B#&#@Y!?Y77??7J~!?77J?7!?^7!?7~?J7J?JJY??J77JJJ~J7!Y7?5JYY55YBGP@@@&&
@@@@@@@@@@@@@@@@B&&#&##&#G&&B##B&#G@J?Y7!!~~?^~?!~!~7J?!7?JJ!5J?77?J?Y5?YJJY?~5!!Y7~YJ75Y5YJ5?#@@&5#
@@@@@@@@@@@@@@@#&#G##&&&B&BB&#G&GG#GPY7!77!!!^~~~~~!7!!~!?77J7!77J7?JYJY??J!7Y?7J?7YJ75?YY7J7J&@#5G#
@@@@@@@@@@@@@@##@##B#&@###GB@7B&5BB5!J?!7~~7~:^~^!~!!!~!7!~77J7!JJ7?7??!J7J7?77P??5J!Y75Y!5@@555B
@@@@@@@@@@@@@@@#&&@&##B5#GGG#PBY?GPJ555PJ?J!7!~~~!!!~!!!!!!~!??!!~?!~!?J?7J?!?~7?YJ7YY757?5~7&@BJ57B
@@@@@@@@@@@@@@@@##&&#BYGB5#BPB5~?BYG5?5GG5Y?~7!~~~!~^~~7!7~!!!7~!7~~~?J77JJ!J!!Y??!J??JY7YJ7#@#7J75#
@@@@@@@@@@@@@@@@@@&GGGB&PPBG#BJPBJPYJ7555Y&P?!7!~!~~!!^~!~~!~7~7~~~~!7!~?77?7~J777!J??YJY??5&BJYY?YB
@@@@@@@@@@@@@@@@@@#P&G&GYPBPPY55P55YY?J?JYP?YJ~77!!~7!7^7!!77^7~!~~~!~7!!77??77!?!??7?Y777?5&P757YJ#
@@@@@@@@@@@@@@@@@@@@GGB5B&G#GGG5?GYP55YJ?JJ??!!~77!!~~!!7~7~!~~~!~!~!~~~~!!!7J!J7~J7??777?7GB??75JJ#
@@@@@@@@@@@@@@@@@@@@@&GP&B#GJG#YGYY5JGYJJ?!???!!!??7!!!?7!~7~!!!7!~~~!:~!77?7?7?^7!!Y77?7??5?J??J7?G
@@@@@@@@@@@@@@@@@@@@@@@&&#GJPGPB5?P7G5J?J?!7777!777J!7~7~!~7!!77!7~!!~~!???7?^?~~?~?!?J~Y7?7JJ7Y7775
@@@@@@@@@@@@@@@@@@@@@@@@@@G#GGGBJBYJ5JY?5??JJ?JJ?77!J!?!~~!~~7~7!~!~7~??77?!!!?!?!?77J!YJ7?7Y5P5J?!~
@@@@@@@@@@@@@@@@@@@@@@@@@@@@#JB5PG?G7?JJ77?~77J5P5B?YJ7!7~7!7~7~7~7!~^~~^^!7^7!~J~??5!?5^J7YJP55YYPP
@@@@@@@@@@@@@@@@@@@@@@@@@@@@&#GGG?GPJG777!!!~~~77?PPB#&&#BGY5JYY7!??7J?!~7~?!7!!~7??J~J!J?JJ?7J?J5GG
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GPBYBP5???!!7!!!~?~7!?755BG#B###GGG55PJ?7?!!^!^!~?^!^77?Y?Y??!?J?PPG
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BGYGP5J?!!!!77!~~7!7!!~!!J!J7?77~^~!!~!~~.^^^~?^!~^?~J?J77!7!!7YJG
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##GP?????7?7!!!!7!?~!~!77?J77!7~!!!!7!~~7^!~!!?^J!!J?!!7!77~7JJB
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#P?????!!?~?~7!7!7~?7???!??!777!!^!~~^~!~^?!!7~J?J7!~777?7JP&
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&B5?!7777!77?!J!7!!??7?????7!~7~!^7!77!!J7?~77!?7?7YY5P55#@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GP?7!7777?7?~7~7!J!??!JJ?~!!7^~~7?7?J!!7!!!!7??J5PGBB#@@
@@@@@@@@@@@@@@@@@@@@&@@@@@@@@@@@@@@@@@@@@@@@@@&#JJ!?J!J7!77JJ?J??7?77~7~!77~???7?!7~7?7JYP5BG&@&&#B@
@@@@@@@@@@@@@@@@@@@@@&@@@@@@@@@@@@@@@@@@@@@@@@@@@&BP?7?~?7?JJ7J5?YY?!J!77?J7JJ77!??7YJP5B###B#G#G#&@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@9?!?77JY?YJ7J?JJYJY?5??7Y5G5P###&BP&PP##&&&##
@@@@@@@@@@@@@@@@@@@@@@@@&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&BP7?7YY7JJJ7JJJY55YP5PG#@@@&G#G#PGG&#B&B&GP&
@@@@@@@@@@@@@@@@@@@@@@#&@@@&@@&@@@&&@@@@@@@@@@@@@@@@@@@@@@&BPPY777YJ5Y5YPPBBB@&&B###PBB&G&G####B&#G@
@@@@@@@@@@@@@@@@&@@@@@&@@@@&@&B&@@&##@@@@B@@@@@@@@@@@@@@@@@@@@@&&#BBBB5B&&BGBB#5&GB@BP&BBG&#@&B@G&@@
@@@@@@@@@@@@@@@@@@@@@@@@@&@@&@&&@&@##@@@#G&&@B&#B&#&@#&@@@@@&#B#5&##&@5BGBPPBP#B#&#&GG@B&G&B#BG&GG&@
@@@@@@@@@@@&&@@@@@@@@@&@@@@@@@&@&@@@@@@@&@@&&@@&B&&@BG&@&@B&PPGYB#&######G#&&#P#G&B&&##@#GY#PG#5&#&@
*/
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define int long long
#define For(i, s, e) for (ll i = s; i < e; i++)
#define FOR(i, s, e) for (ll i = s; i <= e; i++)
#define FORD(i, s, e) for (ll i = s; i >= e; i--)
#define pb push_back
#define vii vector<ll>
#define vpii vector<pair<int, int>>
#define fi first
#define se second
#define sii set<int>
#define pii pair<int, int>
#define rev(c) reverse(c.begin(), c.end())
#define sortf(c) sort(c.begin(), c.end())
#define sortd(c) sort(c.begin(), c.end(), greater<int>())
#define test() \
int test; \
cin >> test; \
while (test--)
#define fast() \
ios_base::sync_with_stdio(false); \
cin.tie(0); \
cout.tie(0);
#define sqr(n) (n) * (n)
#define len(s) (int)(s.length())
#define re0 return 0
#define re return
int const NN = 1e4 + 7;
int const N = 1e6 + 7;
int const inf = 1e18 + 7;
int const mod = 1e9 + 7;
char const NL = '\n';
char const nl = '\n';
// ! ¸,ø¤º°`°º¤ø,¸¸,ø¤º° [ нvмegy ] °º¤ø,¸¸,ø¤º°`°º¤ø,¸ roadтoнυe
signed solve()
{
int n, m;
cin >> n >> m;
vector<vector<char>> s(n + 1, vector<char> (m + 1, '.'));
vector<char> par(2, '.');
FOR(i, 1, n)
{
FOR(j, 1, m)
cin >> s[i][j];
}
bool fail = false;
FOR(i, 1, n) {
FOR(j, 1, m) {
if (s[i][j] != '.') par[(i+j)%2] = s[i][j];
}
}
bool ck = true;
if (par[0] == '.' && par[1] == '.') {
par[0] = 'R';
par[1] = 'W';
}
else {
if (par[0] != '.') {
if (par[0] == 'R') par[1] = 'W';
else par[1] = 'R';
}
if (par[1] != '.') {
if (par[1] == 'R') par[0] = 'W';
else par[0] = 'R';
}
}
FOR(i, 1, n) {
FOR(j, 1, m) {
if (s[i][j] != '.' && s[i][j] != par[(i+j)%2]) ck = false;
}
}
if (ck) {
cout << "YES" << NL;
FOR(i, 1, n) {
FOR(j, 1, m) cout << par[(i+j)%2];
cout << nl;
}
}
else {
cout << "NO" << nl;
}
}
signed main()
{
fast();
test()
solve();
return 0;
}
1350A - Orac and Factors | 1373A - Donut Shops |
26A - Almost Prime | 1656E - Equal Tree Sums |
1656B - Subtract Operation | 1656A - Good Pairs |
1367A - Short Substrings | 87A - Trains |
664A - Complicated GCD | 1635D - Infinite Set |
1462A - Favorite Sequence | 1445B - Elimination |
1656C - Make Equal With Mod | 567A - Lineland Mail |
1553A - Digits Sum | 1359B - New Theatre Square |
766A - Mahmoud and Longest Uncommon Subsequence | 701B - Cells Not Under Attack |
702A - Maximum Increase | 1656D - K-good |
1426A - Floor Number | 876A - Trip For Meal |
1326B - Maximums | 1635C - Differential Sorting |
961A - Tetris | 1635B - Avoid Local Maximums |
20A - BerOS file system | 1637A - Sorting Parts |
509A - Maximum in Table | 1647C - Madoka and Childish Pranks |